1. Field
Embodiments described herein relate generally to image processing apparatus.
2. Description of Related Art
According to the tile-based rendering method, a final image is generated by dividing the entire screen into plural rectangular regions (tiles), and then drawing images for the individual tiles independently. Hence, the method is known to be capable of significantly reducing the memory bandwidth of an external memory for an application with fewer vertices and capable of easily obtaining scalability in pixel performance by use of the multi-core technique.
Specifically, the operations up to vertex processing are firstly executed for a command list. Then, calculation is performed to identify which tiles each triangle formed with the vertices belongs to. Then, the vertices are sorted into the tiles on the basis of the calculation results. The processing to sort the vertices into the tiles is known as “sorting.” The results of sorting are sequentially accumulated in the sorting buffer outside the graphics processing unit. Once the sorting for all draw commands is finished, the rasterizing and the pixel processing are executed for each of the tiles. The drawing of the image is completed when the pixel processing for all the tiles is completed.
Note that each tile has a limited number of pixels. For example, assuming that each pixel has 4 bytes, a tile of 32×32 pixels has a data size of 4 KB (=32×32×4 bytes) only. Hence, the data on each tile can be held in the tile buffer provided in the graphics processing unit. Accordingly, instead of the access to the frame buffer, only the access to the tile buffer is needed for the pixel processing. Thus, significant reduction can be achieved in the number of accesses to the memory outside the graphics processing unit. In addition, since the pixel processing is performed for each tile independently of the other tiles, parallel processing for plural pixels can be implemented easily.
The conventional tile-based rendering method, however, needs the sorting of the vertices into the tiles and the creating of a sorting list that indicates the association of the tiles with the vertices. Accordingly, particularly with a large number of vertices, the number of accesses to the sorting buffer outside the graphics processing unit is increased and the capacity of the sorting buffer is also increased. Such increases are problems that may probably nullify the advantages of the tile-based rendering method.